In a wireless communication system, a High Speed Downlink Packet Access (HSDPA) process uses adaptive modulation, hybrid ARQ (Automatic Repeat Request) and other techniques to achieve high throughput, reduce delay and achieve high peak rates between UTRAN (Universal Terrestrial Radio Access Networks) and UEs (User Equipment). It relies on a new transport channel, the HS-DSCH (High Speed Downlink Shared Channel), to perform data exchange for the HSDPA process.
The new functionality of hybrid ARQ and HSDPA are included in the new entity called MAC-hs (MAC used for high speed) in the MAC (Medium Access Control) layer. The MAC-hs, as shown in FIGS. 1A and 1B, supports priority handling by allowing different priority classes in the same transport channel and by using transmission sequence number (TSN) to track in-sequence delivery of receiving data blocks within a priority class at the UE. Reordering buffer for each priority classes are used for support in-sequence delivery.
At one end of the HSDPA, the UTRAN uses a scheduler to schedule all UEs within a cell. The scheduler determines the HARQ Entity (one per UE) and the priority class queues to be served and schedules new transmissions and retransmission accordingly. A new transmission can be initiated on an HARQ process at any time. The UTRAN uses the HARQ Entity to set the priority class identifier based on priority class of the queue being serviced. It also increments TSN for each new data block within the same HS-DSCH and priority class. TSN is initiated at value 0. The HARQ also processes the status report from the UE, which includes ACK/NACK from the receiver and passes all status to the scheduler.
At the other end of the HSDPA, the UE uses three functional units, shown in FIG. 1C, to support the HARQ protocol. First, HARQ Entity processes HARQ process identifiers. It allocates received data blocks to different HARQ processes based on the HARQ process identifiers. Second, HARQ process will process new data indicator, do error detection processing, and transmit status reports. Last, there is one re-ordering entity for each priority class and transport channel configured at the UE. It inserts received data blocks to its appropriate position in the queue according to its TSN. If the received data block is the next to be delivered to higher layer, all data blocks with consecutive TSNs up to the first not received data block are delivered to higher layer.
Therefore, the UE provides in-sequence delivery to higher layers by storing the correctly received data blocks in reordering buffers first before the delivery to upper layers. Logically, one buffer per priority class is needed to provide in-sequence delivery per priority class. The data blocks are delivered to higher layers in-sequence, i.e. a data block with TSN (transmission sequence number)=SN is only delivered to higher layers when all data blocks with TSN up to and including SN-1 has been received correctly. When a data block with low sequence number in the buffer is missing (i.e. not yet correctly received), all received data blocks with higher TSN are kept in the reordering buffer. The principle is shown in FIG. 2. The data blocks 0,1,2 are correctly received and are immediately delivered to higher layer. The data blocks 4,6,7 are stored in the reordering buffer because the data block 3 is missing.
On the whole, several conditions can cause a data block missed during the transmission: (1) NACK is detected as an ACK. In a normal condition, UTRAN transmits a data block, the UE will return an ACK if received the data block correctly, otherwise, the UE will return a NACK. However, an error might happen during transmission process of the acknowledgement and the UTRAN may mistake a NACK as an ACK. Therefore, in this situation, instead of retransmission the particular buffered data block, the UTRAN discards the data block. The UTRAN starts afresh with new data in the HARQ process. Retransmission is left up to higher layers. (2) The retransmission of a data block is interrupted due to that the number of transmissions of the particular data block reaches a predefined maximum number or that there exist data with higher priority class. In this case, the UTRAN may optionally resume retransmission of the data block at a later time or start a transmission of a new data block and discard the interrupted data block. (3) Because a CRC error on the HS-SCCH is detected, the UE will neither receive data nor send status report out. Upon detecting the absence of the status report, the UTRAN will retransmit the block. (4) The receiver can not correctly encode a data block and return a NACK back to the transmitter. A retransmission is expected in this case.
Indeed, case (3) and case (4) discussed above often cause some data block retransmission, in turn, cause gaps existing in the received TSNs. In these cases, the reordering entity can maintain the received data blocks in the reordering buffer until all data blocks with lower TSN have been received.
However, when case (1) and case (2) discussed above happen, the missing data blocks are permanently lost or will not be received in a foreseeable time. In these situations, a missing data block will not be received, nor it may be received much later. If no special mechanism is introduced in the reordering entity, the protocol is stalled, and many correctly received data blocks will not be delivered to higher layer due to missing data block below in the same reorder buffer.
Therefore, using stall avoidance mechanisms in the reordering buffer is necessary to avoid stalling of the protocol. The mechanism can be based on timers, transmitter/receiver windows or a combination of these. In the prior art, a timer based stall avoidance mechanism, having only one upper layer configured timer T1 for the control of the stall avoidance of the UE reordering buffer, is described as following: If no timer T1 is active, the timer T1 is started when a data block with TSN=SN is correctly received but can not be delivered to higher layer due to that a data block with lower TSN is missing. If a timer T1 is already active no additional timer can be started, i.e. maximum one timer T1 can be active at a given time. The timer T1 is stopped if the data block for which the timer was started can be delivered to higher layer before the timer expires.
When the timer expires, all data blocks up to and including TSN-1 will be removed from the reordering buffer. In addition, all data blocks up to the first missing data block shall be delivered to higher layer. When the timer T1 is stopped or expires, and there still exist some received data blocks that can not be delivered to higher layer, the timer T1 is started for the data block with lowest TSN among those data blocks that can not be delivered.
All in all, at least two potential drawbacks exist in the above-discussed timer-based mechanism. (1) Inefficient timer cascade procedure might degrade data transmission latency; and (2) Ambiguity problem due to the modulus nature of finite-bit-length TSN (transmission sequence number) might happen so that the in-sequence delivery requirement is not fulfilled and upper layer protocol error is induced.
Next, refer to FIG. 3. If TSN=0 and 7 had been discarded by the transmitter because the return NACKs from the receiver have been mistaken for ACKs due to communication error. At the receiver, the timer will be activated first for the gap of TSN=0, 1, 2. Before the timer expires, data blocks of TSN=1 and 2 were received. Thus, when the timer expires, TSN=0 is discarded and TSN=1 up to 6 are delivered to upper layers. Then, the timer will be activated again for the gap of TSN=7. The latencies for TSN=8 are degraded because of the cascaded timer procedure.
Again, refer to FIG. 4. A 4 bits TSN is used. The receiver receives data blocks with TSN=1, 2, 3, and 5 with two gaps at TSN=0 and TSN=4. When timer expires, the first gap TSN=0 (the first zero TSN) is removed from the reordering buffer while three data blocks, TSN=1, 2, and 3, are delivered to upper layer to meet in-sequence delivery requirement. The receiver is now expecting to receive a plurality of sequential TSN data blocks, such as TSN=4, 6, 7, 8 . . . 14, 15, 0, 1, 2 and so on. Note that the expected TSN =0 (the second zero TSN) is different from the removed first zero previously.
Now, if the first zero TSN is retransmitted by the transmitter and received by the receiver, based on the prior art mechanism, the receiver will mistakenly confuse this newly arrived first zero TSN as the zero TSN of the second TSN cycle. After the timer for gap TSN=4 times out or after TSN=4 data block is received, and after TSN=6 up to 15 are also received, the out of date TSN=0 data block will be delivered to upper layer. In this situation, the data blocks are, in fact, delivered to upper layer out of sequence and will cause an upper layer protocol error.